package cn.edu.zafu.bigdata.hjn;

// 1. 定义接口 Movable
interface Movable {
    void move();  // 抽象方法：物体移动
    void stop();  // 抽象方法：物体停止移动
}

// 2. 定义接口 Resizable
interface Resizable {
    void resize(double factor);  // 抽象方法：根据因子进行缩放
}

// 3. 编写类 Car，实现 Movable 接口
class Car implements Movable {
    @Override
    public void move() {
        System.out.println("The car is moving.");
    }

    @Override
    public void stop() {
        System.out.println("The car has stopped.");
    }
}

// 4. 编写类 ResizableCircle，实现 Movable 和 Resizable 接口
class ResizableCircle implements Movable, Resizable {
    private double radius;  // 半径属性

    // 构造函数
    public ResizableCircle(double radius) {
        this.radius = radius;
    }

    @Override
    public void move() {
        System.out.println("The circle is moving.");
    }

    @Override
    public void stop() {
        System.out.println("The circle has stopped.");
    }

    @Override
    public void resize(double factor) {
        radius *= factor;  // 根据因子修改半径
        System.out.println("The resized circle has a radius of: " + radius);
    }
}

// 5. 编写测试类 TestInterface
public class TestInterface {
    public static void main(String[] args) {
        // 创建 Car 和 ResizableCircle 的实例
        Car car = new Car();
        ResizableCircle circle = new ResizableCircle(5.0);  // 初始半径为 5.0

        // 验证 Car 类对接口方法的实现
        car.move();        // 调用 move() 方法
        car.stop();       // 调用 stop() 方法

        // 验证 ResizableCircle 类对接口方法的实现
        circle.move();    // 调用 move() 方法
        circle.stop();    // 调用 stop() 方法
        circle.resize(2.0); // 调用 resize() 方法，因子为 2.0
    }
}

